package com.eastdigit.system.service;

import com.eastdigit.servlet.ReqBean;
import com.eastdigit.system.model.Role;
import com.eastdigit.system.model.RoleMenu;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.List;

/**
 * Created by Administrator on 2016/8/5.
 */
public interface IRoleService {
    /**
     * 查询角色，返回JSONArray
     * 
     * @param reqBean
     * @return 返回JSONArray
     */
    public JSONObject queryTable(ReqBean reqBean);

    /**
     * 角色树
     * 
     * @param userId
     * @return 当前用户所属部门及以下部门的角色
     */
    public JSONArray queryRoleTree(String userId);

    /**
     * 通过id查找
     * 
     * @param roleId
     * @return
     */
    Role queryById(String roleId);

    /**
     * 新增角色
     * 
     * @param role
     */
    void add(Role role);

    /**
     * 修改角色
     * 
     * @param role
     */
    void update(Role role);

    /**
     * 删除角色
     * 
     * @param roleId
     */
    void delete(String roleId);

    /**
     * 删除角色，这里不考虑子部门的问题
     * 
     * @param deptId
     */
    void deleteByDeptId(String deptId);

    /**
     * 查询用户所拥有的角色
     * 
     * @param userId
     * @return
     */
    List<Role> queryRoleOfUser(String userId);

    /**
     * 查询[角色-菜单]关系
     * 
     * @param roleId
     * @return
     */
    List<RoleMenu> queryRoleMenu(String roleId);

    /**
     * 新增[角色-菜单]关系
     * 
     * @param roleId
     * @param menuIds
     */
    void addRoleMenu(String roleId, String menuIds);

    /**
     * 删除[角色-菜单]关系
     * 
     * @param roleId
     * @param menuIds
     */
    void deleteRoleMenu(String roleId, String menuIds);
}
